package packageBusiness;

import java.util.ArrayList;
import packageDataAccess.CategorieSyllathequeData;
import packageDataAccess.SyllabusSyllathequeData;
import packageException.*;
import packageModel.Categorie;
import packageModel.Syllabus;

/**
 *
 * @author Lionel & Julien
 */
public class CategorieManager {
    
    /**
     * Renvoie les détails de toutes les catégories dans le but de lister dans les catégories
     * 
     * @return ArrayList<Categorie>
     * @throws CategorieException
     * @throws DataException  
     */
    public ArrayList<Categorie> Categorie() throws 
            CategorieException,
            DataException {
        CategorieSyllathequeData bd_gc = new CategorieSyllathequeData();
        return bd_gc.getAllCategorie();
    }
    
    /**
     * Renvoie les informations correspondant à la catégorie dont l'id est passé en paramètre
     * 
     * @param categorieId
     * @return Categorie
     * @throws CategorieException
     * @throws InvalideDonneesException
     * @throws DataException  
     */
    public Categorie getCategorie(int categorieId) throws 
            CategorieException, 
            InvalideDonneesException,
            DataException {
        if(categorieId < 0) throw new InvalideDonneesException();
        CategorieSyllathequeData bd_gc = new CategorieSyllathequeData();
        return bd_gc.getCategorieById(categorieId);
    }
    
    /**
     * Renvoie tous les syllabus correspondant à la catégorie dont l'id est passé en paramètre
     * Utile pour afficher les syllabus correspondant à une catégorie donnée.
     * 
     * @param categorieId
     * @return ArrayList<Syllabus>
     * @throws SyllabusException
     * @throws CategorieException
     * @throws LangueException
     * @throws AuteurException
     * @throws InvalideDonneesException
     * @throws DataException  
     */
    public ArrayList<Syllabus> getSyllabusByCategorie(int categorieId) throws 
            SyllabusException, 
            CategorieException, 
            LangueException, 
            AuteurException, 
            InvalideDonneesException,
            DataException {
        if(categorieId < 0) throw new InvalideDonneesException();
        SyllabusSyllathequeData bd_ss = new SyllabusSyllathequeData();
        return bd_ss.getProduitSylByCategorie(categorieId);
    }
    
}
